namespace Hack.Decompiling.PEA.CLR
{
  using System;
  using System.IO;
  using System.Reflection;
  using System.Reflection.Emit;
  using System.Collections.Generic;
  using System.Runtime;
  using System.Runtime.InteropServices;
  using System.Text;

  [Flags]
  public enum ExceptionHanlderFlags : uint
  {
    Clause  = 0,
    Filter  = 1,
    Finally = 2,
    Fault   = 4,
  }

  public class ExceptionHandlerEntry
  {
    #region Statics
    #endregion
    #region Fields
    protected ExceptionHanlderFlags flags = ExceptionHanlderFlags.Clause;
    protected uint tryOffset = 0;
    protected uint tryLength = 0;
    protected uint handlerOffset = 0;
    protected uint handlerLength = 0;
    protected uint filterOffset = 0;
    protected Type classType = null;
    #endregion
    #region Properties
    public virtual ExceptionHanlderFlags Flags
    {
      get
      {
        return this.flags;
      }
      set
      {
        this.flags = value;
      }
    }
    public virtual uint TryOffset
    {
      get
      {
        return this.tryOffset;
      }
      set
      {
        this.tryOffset = value;
      }
    }
    public virtual uint TryLength
    {
      get
      {
        return this.tryLength;
      }
      set
      {
        this.tryLength = value;
      }
    }
    public virtual uint HandlerOffset
    {
      get
      {
        return this.handlerOffset;
      }
      set
      {
        this.handlerOffset = value;
      }
    }
    public virtual uint HandlerLength
    {
      get
      {
        return this.handlerLength;
      }
      set
      {
        this.handlerLength = value;
      }
    }
    public virtual uint FilterOffset
    {
      get
      {
        return this.filterOffset;
      }
      set
      {
        this.filterOffset = value;
      }
    }
    public virtual Type ClassType
    {
      get
      {
        return this.classType;
      }
      set
      {
        this.classType = value;
      }
    }
    #endregion
    #region Constructors
    #endregion
    #region Methods
    #endregion
  }
}
